package xyz.zcq.example.provider;

import xyz.zcq.example.common.service.UserService;
import xyz.zcq.zcqrpc.RpcApplication;
import xyz.zcq.zcqrpc.bootstrap.ProviderBootstrap;
import xyz.zcq.zcqrpc.config.RegistryConfig;
import xyz.zcq.zcqrpc.config.RpcConfig;
import xyz.zcq.zcqrpc.model.ServiceMetaInfo;
import xyz.zcq.zcqrpc.model.ServiceRegisterInfo;
import xyz.zcq.zcqrpc.registry.LocalImplRegistry;
import xyz.zcq.zcqrpc.registry.Registry;
import xyz.zcq.zcqrpc.registry.RegistryFactory;
import xyz.zcq.zcqrpc.server.tcp.VertxTcpServer;

import java.util.ArrayList;
import java.util.List;

/**
 * 服务提供者示例
 */
public class ProviderExample {

    public static void main(String[] args) {
//        // RPC框架初始化
//        RpcConfig rpcConfig = RpcApplication.getRpcConfig();
//        System.out.println(rpcConfig);
//
//        // 注册服务实现到本地
//        String serviceName = UserService.class.getName();
//        LocalImplRegistry.register(serviceName, UserServiceImpl.class);
//
//        // 注册服务到注册中心
//        RegistryConfig registryConfig = rpcConfig.getRegistryConfig();
//        Registry registry = RegistryFactory.getInstance(registryConfig.getRegistry());
//        ServiceMetaInfo serviceMetaInfo = new ServiceMetaInfo();
//        serviceMetaInfo.setServiceName(serviceName);
//        serviceMetaInfo.setServiceHost(rpcConfig.getServerHost());
//        serviceMetaInfo.setServicePort(rpcConfig.getServerPort());
//        try {
//            registry.register(serviceMetaInfo);
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//
//        // 启动Web服务
//        new VertxTcpServer().doStart(rpcConfig.getServerPort());

        List<ServiceRegisterInfo<?>> serviceRegisterInfoList = new ArrayList<>();
        serviceRegisterInfoList.add(new ServiceRegisterInfo<>(UserService.class.getName(), UserServiceImpl.class));
        ProviderBootstrap.init(serviceRegisterInfoList);
    }

}
